package com.dc.commons.persistence.able;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.MappedSuperclass;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import com.dc.commons.annotation.DcComment;
import com.dc.commons.json.format.DateTimeFormat;
import com.dc.commons.persistence.embeddable.Member;

/*******************************************************************************<P>
 * 文件名: OperatorAble.java <br>
 * 版本: 1.0<br>
 * 描述:操作记录接口，可以记录数据的创建人，创建时间，最后修改人，最后修改时间<br>
 * 版权所有: <br>
 * <P>
 * 创建者: 王建栋 <br>
 * 创建日期: 2015年12月17日 下午8:53:34<br>
 * 修改者: <br>
 * 修改日期: <br>
 * 修改说明: <br>
 *****************************************************************************
 */
@MappedSuperclass
public interface OperatorAble extends IDAble,DataStatusAble {

	/**
	 * 设置创建人
	 * @param createkey
	 */
	public void setCreateKey(Member createkey);
	
	/**
	 * 获得创建人
	 * @return createKey
	 */
	
	@Embedded
	@DcComment(value="创建人")
	public Member getCreateKey();
	
	
	/**
	 * 设置创建时间
	 * @param createDate
	 */
	public void setCreateDate(Date createDate);
	
	/**
	 * 获得创建时间
	 * @return createDate
	 */
	@Column(name="CREATE_Date",updatable=false)
	@Temporal(TemporalType.TIMESTAMP)
	@DateTimeFormat
	@DcComment(value="创建时间")
	public Date getCreateDate();
	
	/**
	 * 设置修改人
	 * @param updateKey
	 */
	public void setUpdateKey(Member updateKey);
	
	/**
	 * 获得最后修改人
	 * @return updateKey
	 */
	@Embedded
	@DcComment(value="最后修改人")
	public Member getUpdateKey();
	
	
	/**
	 * 设置最后修改时间
	 * @param updateDate
	 */
	public void setUpdateDate(Date updateDate);
	
	/**
	 * 获最后建时间
	 * @return updateDate
	 */
	@Column(name="UPDATE_Date")
	@Temporal(TemporalType.TIMESTAMP)
	@DateTimeFormat
	@DcComment(value="最后修改时间")
	public Date getUpdateDate();
	
	
	
	
}
